package View;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.BoxLayout;
import javax.swing.JScrollPane;

import java.awt.FlowLayout;
import javax.swing.JTextPane;
import java.awt.GridLayout;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextArea;
import java.awt.Font;
import java.awt.SystemColor;
import javax.swing.JScrollBar;
import javax.swing.ScrollPaneConstants;

import Application.RequestDbCrown;

import comm.AppInterface;

import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class VisualDbWindow {

	public JFrame frmDbcrownClient;
	private JTextField txtInfoDevice;
	private JTextField txtInfoMeasure;
	private JTextField txtInfoValue;
	private JTextPane txtPaneConfiguraciones;
	public static JTextArea txtAreaRealiza;
	public static JTextArea txtAreaRecibe;


	/**
	 * Create the application.
	 */
	public VisualDbWindow() 
	{
		RequestDbCrown client=RequestDbCrown.getInstance();
		initialize(client);
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize(final RequestDbCrown client) {
		frmDbcrownClient = new JFrame();
		frmDbcrownClient.setTitle("DbCrown client");
		frmDbcrownClient.setBounds(50, 50, 1100, 600);
		frmDbcrownClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmDbcrownClient.getContentPane().setLayout(new BorderLayout(0, 0));
		
		JPanel PanelTitulo = new JPanel();
		frmDbcrownClient.getContentPane().add(PanelTitulo, BorderLayout.NORTH);
		
		JLabel lblTitulo = new JLabel("DBCROWN CLIENT by itcrown team");
		lblTitulo.setFont(new Font("Tempus Sans ITC", Font.BOLD, 30));
		PanelTitulo.add(lblTitulo);
		
		JPanel PanelConfiguraciones = new JPanel();
		frmDbcrownClient.getContentPane().add(PanelConfiguraciones, BorderLayout.WEST);
		PanelConfiguraciones.setLayout(new BoxLayout(PanelConfiguraciones, BoxLayout.Y_AXIS));
		
		JLabel lblConfiguraciones = new JLabel("Configuraciones");
		PanelConfiguraciones.add(lblConfiguraciones);
		
		txtPaneConfiguraciones = new JTextPane();
		txtPaneConfiguraciones.setEditable(false);
		AppInterface.getAllProperties(txtPaneConfiguraciones);
		PanelConfiguraciones.add(txtPaneConfiguraciones);
		
		JPanel PanelDerecho = new JPanel();
		frmDbcrownClient.getContentPane().add(PanelDerecho, BorderLayout.EAST);
		
		JPanel PanelInferior = new JPanel();
		frmDbcrownClient.getContentPane().add(PanelInferior, BorderLayout.SOUTH);
		
		JPanel PanelCentral = new JPanel();
		frmDbcrownClient.getContentPane().add(PanelCentral, BorderLayout.CENTER);
		PanelCentral.setLayout(new GridLayout(3, 0, 0, 0));
		
		JPanel PanelCentralSuperior = new JPanel();
		PanelCentral.add(PanelCentralSuperior);
		PanelCentralSuperior.setLayout(new GridLayout(3, 0, 0, 0));
		
		JPanel PanelCentralSuperiorTitulo = new JPanel();
		PanelCentralSuperior.add(PanelCentralSuperiorTitulo);
		
		JLabel lblTituloBotones = new JLabel("Debug para testear el env\u00EDo de requests al servidor");
		lblTituloBotones.setForeground(Color.RED);
		lblTituloBotones.setBackground(new Color(255, 0, 0));
		PanelCentralSuperiorTitulo.add(lblTituloBotones);
		
		JPanel PanelCentralMedio = new JPanel();
		PanelCentralSuperior.add(PanelCentralMedio);
		PanelCentralMedio.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JLabel lblNewLabel = new JLabel("InfoDevice");
		PanelCentralMedio.add(lblNewLabel);
		
		txtInfoDevice = new JTextField();
		PanelCentralMedio.add(txtInfoDevice);
		txtInfoDevice.setColumns(10);
		
		JLabel lblEtiq = new JLabel("InfoMeasure");
		PanelCentralMedio.add(lblEtiq);
		
		txtInfoMeasure = new JTextField();
		PanelCentralMedio.add(txtInfoMeasure);
		txtInfoMeasure.setColumns(10);
		
		JLabel lblEtiq_1 = new JLabel("InfoValue");
		PanelCentralMedio.add(lblEtiq_1);
		
		txtInfoValue = new JTextField();
		PanelCentralMedio.add(txtInfoValue);
		txtInfoValue.setColumns(10);
		
		
		JPanel PanelCentralInferior = new JPanel();
		PanelCentralSuperior.add(PanelCentralInferior);
		PanelCentralInferior.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JButton btnAceptar = new JButton("Realizar Request");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) 
			{
				client.makeRequest(txtInfoDevice.getText(),txtInfoMeasure.getText(),txtInfoValue.getText());  
			}
		});
		PanelCentralInferior.add(btnAceptar);
		
		JPanel PanelEnviado = new JPanel();
		PanelCentral.add(PanelEnviado);
		
		JLabel lblLlamadasRealizadasAl = new JLabel("Llamadas realizadas al servidor");
		PanelEnviado.add(lblLlamadasRealizadasAl);
		
		txtAreaRealiza = new JTextArea();
		txtAreaRealiza.setLineWrap(true);
		txtAreaRealiza.setEditable(false);
		txtAreaRealiza.setColumns(60);
		txtAreaRealiza.setRows(7);
		txtAreaRealiza.setBackground(SystemColor.inactiveCaption);
		JScrollPane sp = new JScrollPane(txtAreaRealiza); 
		sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		PanelEnviado.add(sp);
		
		JPanel PanelRecibido = new JPanel();
		PanelCentral.add(PanelRecibido);
		
		JLabel lblRespuestasRecibidasDel = new JLabel("Respuestas recibidas del servidor");
		PanelRecibido.add(lblRespuestasRecibidasDel);
		
		txtAreaRecibe = new JTextArea();
		txtAreaRecibe.setLineWrap(true);
		txtAreaRecibe.setEditable(false);
		txtAreaRecibe.setRows(7);
		txtAreaRecibe.setColumns(60);
		txtAreaRecibe.setBackground(SystemColor.inactiveCaption);
		JScrollPane sp2 = new JScrollPane(txtAreaRecibe); 
		sp2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		PanelRecibido.add(sp2);
	}
	
	public static void setTxtAreaRealiza(String debug)
	{
		txtAreaRealiza.setText(txtAreaRealiza.getText()+"\n"+debug);
	}
	
	
	public static void setTxtAreaRecibe(String debug)
	{
		txtAreaRecibe.setText(txtAreaRecibe.getText()+"\n"+debug);
	}
	
	
}
